List boxes and similar user interface controls are a common way to display information on computer systems. As the amount of information users consume has increased, these controls may hold potentially thousands of items. Over time, list boxes have received various improvements to handle the quantity of information for which they are used. For example, some implementations store only a small amount of visible information in the control and notify applications when more information is needed (e.g., as a user scrolls through the information). Other implementations cache items so that they are more readily available.
Mobile devices introduce a number of constraints that are not present or are less problematic on desktop computers. Mobile devices typically include a less powerful central processing unit (CPU) and graphics-processing unit (GPU), if one is present at all. In addition, connectivity between mobile devices and sources of information (e.g., information servers) may be limited. For example, some areas may offer EDGE or 3G connections while others offer higher bandwidth Wi-Fi connections.
The slow speed of retrieving and processing information can cause a number of undesirable behaviors on a mobile device, including stuttering that is visually disconcerting for the user. Lists of information often include information that is not suitable for caching. For example, lists of email messages, social networking updates, and similar information may be fast changing such that cached information would quickly become out of date. On the other hand, the quantity of information and delay to retrieve it makes waiting for all of the information to arrive before displaying anything to the user an unacceptable wait for the user. When information is available, processing it often involves re-layout of the whole control in modern implementations. CPU utilization dramatically increases during this operation, which leads to the stuttering. Users expect mobile user interfaces to remain responsive under a variety of challenging conditions.